Undefined

The term undefined is used in two different ways in this manual. An expression may yield an undefined value, in which case it yields some value, the particular value not being defined by this manual. In such cases it is unwise to depend on this value having any particular characteristics, for example, it being null, or not a number, or whatever. The evaluation of the expression and the creation of the undefined value are not in error; it is the use to which this value is put that may lead to problems. Expressions yielding undefined values are generally useful only for any side-effects they cause.

On the other hand, the evaluation of an expression may have an undefined effect, in which case an implementation will endeavor to signal an error condition, permitting a user to take appropriate action. For example, a call to a non-procedure, or adding two symbols together, have undefined effects. An implementation is not obliged however, to signal an error, and in fact it may be in the interest of efficiency to avoid the overhead of detecting circumstances under which undefined effects will happen.

The two procedures UNDEFINED-VALUE and UNDEFINED-EFFECT are used for expository purposes in examples throughout this manual; they are described in section [*].